package solutions;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 黎鹤舞
 * Date: 2023-12-17
 * Time: 13:57
 */

//给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
//不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
//元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
public class Solution1 {
    public void swap(int[] nums ,int x, int y) {
        int temp = nums[x];
        nums[x] = nums[y];
        nums[y] = temp;
    }
    public int removeElement(int[] nums, int val) {
        int j = nums.length - 1;
        for(int i = 0; i <= j; i++) {
            if(nums[i] == val) {
                //这一步太天才了!
                //i-- 让交换过来的数仍能被检测(如果交换过来的数仍是需要删除的数)
                //j-- 让后续的位置不断向前左移
                swap(nums,i--,j--);
            }
        }
        return j+1;
    }
}
